#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "key.h"
#include "eeprom.h"

unsigned char ID = 0x03;					//设备ID
unsigned char comd1 = 0x00;					//全部点亮忽视ID
unsigned char comd2 = 0x00;					//根据ID点亮
uint Config_flag = 0;						//是否进入参数配置标志位 1位进入配置模式
uint index = 0;								//记录设置的是第几个参数

void main()
{
	BYTE tmp =0;
	int key = 0;
	
	UART_Init();
	
	if(AT24C02_Check()==0)
	{
		//AT24C02存有数据，
		ID = ReadOneByte(0);				//读出ID值
	}
	
	EA = 1;
	
	while(1)
	{
		if(Config_flag==0)				
		{
			/* 正常工作模式 */
			
			/* 接收到数据，进行解析 */
			if((R_STA&0x80)==0x80)
			{
				comd1 = str[1];
				comd2 = str[2];
				R_STA = 0;		//处理数据后清除串口接收标志
				//UART_Putch(str);
			}
			
			key = KEY_Scan(0);
			
			/* 切换配置模式 */
			if(key == 1 || ID == 0x03)							
			{
				Config_flag = 1;
				EA = 0;
			}
			
			/* 根据ID 显示当前配置状态 */
			switch (ID)
			{
				case 0x01: {LED2 = 0;LED3 = 1;} break;	// 奇数点亮，绿灯亮
				case 0x02: {LED2 = 1;LED3 = 0;} break;	// 偶数点亮，蓝灯亮
				default:;
			}
			
			/* 根据串口接收到的命令点亮对应LED */
			if((comd1 == 0x01)||(comd2 == ID))
			{
				Led_ON();
			}
			else
			{
				Led_OFF();
			}
		}
		else
		{
			Led_OFF();
			/* 配置模式模式 */
			key = KEY_Scan(0);
			if(key == 1)				//退出配置模式
			{
				Config_flag = 0;
				EA = 1;
			}
			else if(key == 2)
			{
				ID = 0x01;
				WriteOneByte(0,ID);					//更新ID
				WriteOneByte(255,0x55);				//更新标志位，表示AT24C02写入了数据
				Config_flag = 0;
				EA = 1;
				
			}
			else if(key == 3)
			{
				ID = 0x02;
				WriteOneByte(0,ID);					//更新ID
				WriteOneByte(255,0x55);				//更新标志位，表示AT24C02写入了数据
				Config_flag = 0;
				EA = 1;
			}
			
			/* LED配置灯闪烁，表示进入配置模式 */
			Led_Toggle(100);
		}
	}
}
